交换x轴与y轴
|
|
现在将上图中的x轴与y轴进行交换:
|
|
逆转转换后的原x轴变量
中图中交换了x轴与y轴后,发现x轴的分类变量从原来的从左向右排列变成了从下往上排列,但通过scale_x_discrete()参数可以进行逆转:
|
|
设置连续型坐标轴的值域
设置y轴的范围:
|
|
将y轴的范围扩大
|
|
调整y轴的范围,并且在0,5,10处加上标记
|
|
breaks参数中可以加入多个标记,如下所示:
|
|
可以使用expand_limits()来单向扩展值域
|
|
反转一条连续型坐标轴
可以用scale_y_reverse()来翻转坐标轴:
|
|
通过指定y轴的坐标范围也可以实现以上效果,如下所示:
|
|
翻转坐标轴并设定值域:
注意y轴数值的变化:
d
修改x轴上的类别的顺序
基础绘图
|
|
改变x轴的顺序
可以发现,上述图的x轴顺序是ctr1,trt1,trt2,现在改变x轴的顺序:
|
|
上述代码改变x轴的顺序,将原来的顺序ctrl,trt1,trt2改变为trt1,ctrl,trt2。
反转x轴有关类型的顺序
可以用scale_x_discrete(limits=rev())来实现,原图如下:
|
反转后的如下:
|
|
显示其中的两项
下面的代码则只显示ctrl与trt1两组的箱线图:
|
|
设置x轴与y轴的缩放比例
先看一下原图:
|
|
缩小x轴与y轴
|
|
原图中的y轴与x轴的单位长度之比为并不为1:1,加了coord_fixed()之后,y轴长度与x轴长度的单位长度之比为1:1。通过下面的案例可以更加清楚地说明。
下面的代码把x轴与y轴的单位长度设置相同,即两个刻度之间间距都是30
|
|
改变x轴与y轴的比例
通过coord_fixed(ratio=1/2)参数实现,先看一下最基本的实现方法:
|
|
上述的图形的坐标轴表示x轴是y轴的1/2,但并不直观,接下来进行更直观的设置。
把x轴的最小刻度设置为15,把y轴的最小刻度设置为30:
|
|
设置刻度线的位置
原始绘图
|
|
上述图形的坐标轴是均匀分布的,从3.5到6.0,每个间隔是0.5,现在进行更改。
更改y轴的位置
|
|
可以看出来,上述的y轴坐刻度已经发生了改变,变成了4,4.25,4.5,5,6,8。其中scale_y_continuous()表示y轴的数据是连续型的。如果是离散型的则用scale_y_discrete()。
不同类型的x轴刻度
|
|
上述的代码表示,限定x轴上只显示trt2与ctrl两组数据,但只显示ctrl这个类型的标签。
移除刻度线和标签
基本图形
|
|
移除y轴刻度
用到的代码是theme(axis.text.y=element_blank()),即通过主题的应用,把y轴的刻度改为空白,即axis.text.y=element_blank()。
|
|
上面的图形把y轴的刻度标签移除了,只是把数字移除了,但刻度还存在,可以进一步把y轴的刻度线移除,如下所示,现在将x轴与y轴的上的刻度全移除,与上面的一样,即axis.ticks=element_blank()
|
|
上述图形把y轴的刻度标签(数字)与刻度线移除了。
移除刻度线,刻度标签,网格
可以通过一个参数把y轴的刻度线,刻度标签,网格线都移除,即scale_y_continuous(breaks=NULL),如下所示:
|
|
更换主题
ggplot中的背景色默认的是灰色主题,有的时候与论文中排版不协调,可以更换为白色主题,需要的参数是theme_bw(),如下所示:
|
|
修改刻度标签的文本
基本图形
|
|
更改y轴的坐标标签
上述图形的y轴表示的是身高(heightIn),数字表示的是身高的数值,现在可以将数值更改为另外一种标签,即把50,56,60,66,72位置的刻度标签从数值改为”Tiny”,”Really”,”Short”,”Medium”,”Tallish”,如下所示:
|
|
上述图形的y轴表示的内容与原始图形的一样,只是标签变了,其中"Really\nshort"
表示换行。
对标签的进一步优化
下面的代码是构建一个函数,将数值转化为英尺与英寸的格式
|
|
用labels参数将上述的函数传递给标签
|
|
设置刻度
从48到72,每个间隔4
|
|
其余的格式设定
可以把一些时间测试转化为HH:MM:SS(时:分:秒)或者其他类似的格式。如下所示:
|
|
修改刻度标签的外观
基本图形
|
|
下面的命令将x轴上的三个分类变量ctrl,trt1,trt2的名称更改为Control,Treatment1,Treatment2:
|
|
对标签进行旋转
把x轴上的标签改为垂直,上图中的标签太长,可以将其从水平位置更改到垂直位置: angle参数用于更改标签的角度,下面是将标签更改为垂直: 其中hjust用于控制纵向对齐,vjust用于控制横向对齐。
|
|
把把x轴上的标签旋转30度:
|
|
更改标签的大小,样式,字体
|
|
设置坐标轴标签
下面命令是在x轴与y轴上分别添加文本:
|
|
上面的命令是通过xlab()与ylab()来实现的,另外一种方法是通过labs()来实现:
|
|
坐标标签换行
|
|
4
移除坐标轴标签
原始图形
|
|
去掉坐标的标签
下面的命令是将x轴的坐标标签去掉,即去掉了”group”字样:
|
|
使用xlab去除坐标标签
上面的代码是将x轴的坐标标签去掉,下方没有空余空间,另外一种方式是将坐标标签去空白表示,有空余空间,如下所示:
|
|
解释:当用them()来设置axis.title.x=element_blank()时,x轴或y轴标度的名称是不会改变的,只是没有显示其文本,并且不会为其留出空间,而用xlab(“”)时,则是将标度的名称改变成了空白,还是会为名称留出空间。
修改坐标轴标签的外观
原始图形
|
|
现在将上述图形中的x轴坐标标签修改为深红色(darkred),斜体(italic),大小为14(size=14):
|
|
将y轴的标签向左旋转0度(angle=0),斜体(italic)大小为14(size=14)
|
|
将y轴的标签向左旋转90度(angle=90,y轴标签的文字默认是水平的),斜体(italic),深红色(darkred),大小为14(size=14)
|
|
沿坐标轴添加直线:
初始图形
|
|
沿坐标轴添加直线:
|
|
更改主题
如果绘图的主题在绘图区域的周围只有一条边,例如theme_bw()主题,则需要同时重置panel.border参数:
|
|
如果坐标轴上的直线太粗,则末端不会重合,如下所示:
|
|
如果需要末端进行重合,需要添加lineed=”square”命令:
|
|
使用对数坐标轴
初始图形
|
|
修改坐标轴为对数
现在将上述图形的x轴与y轴取对数,如下所示:
|
|
添加刻度标签:
|
|
把坐标轴的标签转化为指数记数法:
|
|
下面的代码表示,先对x轴与y轴的坐标进行转换,将转换后的数据映射到坐标轴上,如下所示:
|
|
下面的代码是将x轴与y轴的坐标进行对数转换,对x轴进行自然对数变换,对y轴进行以2为底数的对数变换。
|
|
折线图的坐标转换
原始图形
|
|
现在对y轴进行对数变换:
|
|
为对数坐标轴添加刻度
用到的函数是annotation_logticks()
,如下所示:
|
进行一步优化刻度线
对x轴或y轴的刻度进一步设置时,可以用minor_breaks=log10(5)+ -2:5)
,即minor_breaks=log10(5*10^(minpow:maxpow))
,这个是用来调整图形中的网格线,如下所示:
|
|
绘制环状图形
基础图形
|
|
先以直方图的形式绘制出来,x轴是DirCat,按SpeedCat进行填充,条形图的组距是15,开始位置是-7.5,x轴的位置范围是0到360。
|
|
极坐标只是将上述的条形图卷曲成了圆形,书中的坐标轴标记是0到60,最小单位是10,但按照书中的代码并不能绘图出来,因此,下面的代码中加入了scale_y_continuous(breaks=seq(0,60,10))。如下所示:
|
|
极坐标的进一步优化
改变直方图的轮廓为黑色(colour=”black”),尺寸为0.25(size=0.25),改变图例的顺序(fill=guide_legend(reverse=TRUE)),优化颜色(scale_fill_brewer()),如下所示:
|
|
参考资料
- 常肖楠, 邓一硕, 魏太云. R数据可视化手册[M]. 人民邮电出版社, 2014.